/**
继承是从已有的类创建新类的过程。
1.继承是面向对象三大特征之一
2.被继承的类成为父类（超类），继承父类的类称为子类（派生类）
3.继承是指一个对象直接使用另一个对象的属性和方法
4.通过继承可以实现代码重用
5.子类在创建对象的时候，父类的无参构造都会被执行

###
语法格式：
		[访问权限] class 子类名 extends 父类名{
		类定义;
		}

####
访问权限		priavte
			protected 父类的方法或属性使用protected（public） 都可以继承
			public

#### 
在子类进行实例化操作的时候，首先会让其父类进行初始化操作。之后子类再自己进行实例化操作。

子类的实例化过程：
子类实例化时会先调用父类的构造方法
如果父类中没有默认的构造方法，在子类的构造方法中必须显示的调用父类的构造方法

结论：
构造方法只是用于初始化类中的字段以及一些初始化代码
调用构造方法并不代表会生成对象




####
继承小结
1.继承是发生在多个类之间
2.继承使用关键字extends
3.java只能单继承，允许多层继承
4.被继承的类叫父类（超类），继承父类的类叫子类（派生类）
5.在父类中的非私有属性和方法可以被子类继承
6.protected，修饰的属性和方法可以被子类继承
7.构造方法不能被继承
8.创建对象会调用构造方法，调用构造方法不一定就是创建该类对象
9.实例化子类对象，会先调用父类的构造方法，如果父类中没有默认的构造方法，那么子类必须显示的通过super（...)来调用父类的带参构造方法，super也只能在子类构造方法中的第一句
继承的好处
1.提高代码的复用性
2.提高代码的维护性
3.让类与类之间产生关系，是多态的前提
继承的缺点
增强了类与类之间的耦合性

开发原则：高内聚，低耦合
*@author leo
*@company leo's company
*@description java_study
2024年2月5日下午6:13:10
Administrator
 */

/*
package com.leo.第五章_面向对象下;
public class U5_L1_L2_L3继承的基本概念 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Huskey("33",3).go();
	}

}

class Dog{
	protected String name;
	public int age;
	@SuppressWarnings("unused")
	private int level;
	
	//public Dog() {
	//	System.out.println("父类无参构造调用成功");
	//}
	public Dog(String name,int age) {
		this.name=name;
		this.age=age;
		System.out.println("父类有参构造调用成功");
	}
	public void go() {
		System.out.println("gogo");
	}
}

class Huskey extends Dog{
	//####父类没有无参 ，子类也没有无参 
	//可以用super调用父类带参构造
	//public Huskey() {
	//	 
	//	System.out.println("子类无参构造调用成功");
	//}
	public Huskey(String name,int age) {
		super(name,age);
		this.age=age;
		this.name=name;
		
		System.out.println("子类有参构造调用成功");
	}
}
*/



